 /*
        ajax_get请求方式封装 
        @param {String}  url 表示请求地址
        @param {Object}  query 表示请求参数
        @param {Function}  success 表示成功时候的回调函数
        @param {Function}  error 表示失败时候的回调函数
        */
 function pAjaxGet(options) {
     return new Promise((resolve, reject) => {
         // 判断url必传
         if (!options.url) {
             alert('请填写请求地址')
             return false
         }
         //  创建对象
         var xhr = new XMLHttpRequest()
         if (options.query) {
             var str = '?'
             for (var key in options.query) {
                 str += `${key}=${options.query[key]}`
                 str += '&'
             }

             str = str.slice(0, -1)
             xhr.open('get', options.url + str)
         } else {
             xhr.open('get', options.url)
         }
         //  三元表达式 判断是否有传递的参数 
         // xhr.open('get', query ? url + str : url)

         xhr.send()
         xhr.onreadystatechange = () => {

             if (xhr.readyState == 4) {

                 if (xhr.status == 200) {
                     // options.success && options.success(xhr.response)
                     resolve(xhr.response)

                 } else {
                     //  options.error && options.error(xhr.response)
                     reject(xhr.response)
                 }

             }

         }
     })

 }


 /*
        ajax_post请求方式封装 
        @param {String}  url 表示请求地址
        @param {Object}  query 表示请求参数
        @param {Function}  success 表示成功时候的回调函数
        @param {Function}  error 表示失败时候的回调函数
        */
 function pAjaxPost(options) {

     return new Promise((resolve, reject) => {
         // 判断url必传
         if (!options.url) {
             alert('请填写请求地址')
             return false
         }
         //  创建对象
         var xhr = new XMLHttpRequest()
         xhr.open('post', options.url)
         //如果需要像 HTML 表单那样 POST 数据,以&形式传输数据
         xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
         if (options.query) {
             var str = ''
             for (var key in options.query) {
                 str += `${key}=${options.query[key]}`
                 str += '&'
             }
             str = str.slice(0, -1)
             xhr.send(str)
         } else {
             xhr.send(str)
         }
         //  三元表达式 判断是否有传递的参数 
         // xhr.send( options.query ?  str : '')

         xhr.onreadystatechange = () => {

             if (xhr.readyState == 4) {

                 if (xhr.status == 200) {
                     resolve(xhr.response)

                 } else {
                     reject(xhr.response)
                 }

             }

         }

     })


 }

 /*
      jsonp跨域封装 
      @param {String} url  代表请求地址  
      @param {Object} query  代表请求参数  
      */

 function jsonP(url, query) {
     if (!url || !query) {
         alert('url 和参数必传！')
         return
     }
     var script = document.createElement('script')
     var str = '?'
     for (var key in query) {
         str += `${key}=${query[key]}&`
     }
     str = str.slice(0, -1)
     script.src = url + str
     document.body.appendChild(script)
     document.body.removeChild(script)
 }

 /*
          设置cookie
          + @param {string} name 设置cookie的名称
          + @param {string} value 设置cookie的值
          + @param {string} time 设置cookie的过期时间
      */
 function setCookie(name, value, time) {
     //判读有无设置过期时间
     if (time) {
         let d = new Date()
         d.setDate(d.getDate() + time)
         let t = d.toUTCString()
         document.cookie = `${name}=${value};expires=${t};path=/`
     } else {
         document.cookie = `${name}=${value};path=/`
     }
 }

 /*
      删除cookie
      + @param {string} name 设置cookie的名称
  */
 function delCookie(name) {
     setCookie(name, 1, -1)
 }

 /*
      获取cookie
      + @param {string} name 设置cookie的名称
  */
 function getCookie(name) {
     //存储多个cookie时，拆分的分号后有空格
     let arr = document.cookie.split('; ')
     let obj = {}

     arr.forEach(item => {
         let newArr = item.split('=')

         obj[newArr[0]] = newArr[1]
     })
     return obj[name]
 }